home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_xtank1.cog < prev    next >
Text File  |  1998-02-25  |  2KB  |  69 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # XTANK1.COG
  4. #
  5. # This cog causes an attached object to explode if damaged sufficiently
  6. #
  7. # 5/23 - RKD - Removed buggy "remains" element
  8. # 5/30 - YB  - Don't explode if hit by fists.
  9. # 7/7  - CR  - Converted to actor cog
  10. #              Added delay in exploding
  11. # 7/7  - YB  - Rewrote the script to use thing user data
  12. # 7/8  - CR  - Adjusted delay, fixed damage test, marked issue closed :)
  13. # 7/25 - YB  - Made execution mode SERVER | SYNC
  14. # 8/26 - RKD - Added killtimerex to fix bug
  15. #
  16. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  17.  
  18. flags=0x80
  19.  
  20. symbols
  21.  
  22. message        created
  23. message        damaged
  24. message        timer
  25.  
  26. template       barrel_exp=+xtank1_exp        local
  27. int            barrel                        local
  28. flex           barrelhealth                  local
  29. flex           damage                        local
  30.  
  31. end
  32.  
  33. # ========================================================================================
  34.  
  35. code
  36.  
  37. created:
  38.    SetThingUserData(GetSenderRef(), 30);     // set the initial user data (i.e. "health")
  39.    Return;
  40.  
  41. # ............................................................................................
  42.  
  43. damaged:
  44.    barrel = GetSenderRef();
  45.    damage = GetParam(0);
  46.    barrelhealth = GetThingUserData(barrel);
  47.  
  48.    if(GetParam(1) == 1) Return;              // barrel won't be damaged by damage type impact
  49.  
  50.    if(barrelhealth <= damage)                // is this enough damage to kill the barrel ?
  51.    {
  52.       SetTimerEx(0.5, barrel, 0, 0);         // prepare to kill the barrel in 0.6 second
  53.       Return;
  54.    }
  55.  
  56.    SetThingUserData(barrel, barrelhealth - damage);
  57.    Return;
  58.  
  59. # ............................................................................................
  60.  
  61. timer:
  62.    KillTimerEx(GetSenderId());
  63.    CreateThing(barrel_exp, GetSenderId());   // create an explosion
  64.    DestroyThing(GetSenderId());              // Destroy the barrel
  65.    Return;
  66.  
  67. end
  68.  
  69.